4.13. Tcl -ohjelman sisäisen tilan tutkiminen
Tcl-kielisiä ohjelmia tehdessä on hyödyllistä tutkia olemassa olevien muuttujien arvoja ja esimerkiksi minkä nimisiä muuttujia on olemassa. Ohjelman tilan tutkiminen on joskus välttämä töntä saadakseen selville, mitä ihmettä ohjelma oikein tekee. Info-komennolla voi tutkia esimerkiksi paikallisten muuttujien ja globaalien muuttujien olemassa oloa. Tämä auttaa silloin, jos joku mu uttuja tuntuu olevan hiukan kadoksissa. Info-komennolla voi tutkia, tietääkö juuri tietty kohta ohjelmasta annettujen muuttujien olemassaolosta mitään. Joskus saattaa epähuomiossa unohtua global-komento aliohjelman alusta, joka voi aiheuttaa harmaita hiuksia nuoremmille ohjelmoijillekin.
global globbis
set globbis 99
proc prokkis_tee_jotain {} {
puts "Tärkeä luku: $globbis"
}
prokkis_tee_jotain
=>tulkki valittaa tässä vaiheessa ettei tunne koko globbis-muuttujaa...
Esimerkin aliohjelma korjaantuu, kun laitetaan yksinkertaisesti komento "global globbis" aliohjelman ensimmäiseksi riviksi. Vars-optiolla info -komento palauttaa listan muuttujista, joita ohjelma pystyy siinä kohdassa käsittelemään (viittaamaan niiden arvoihin ja muuttamaan niiden arvoa). Seuraavassa esimerkissä aliohjelmassa prokkis1 kutsut tu info vars -komento palauttaisi listan, jossa on muuttujien globbis ja apu nimet. Aliohjelman prokkis2 vastaava komento palauttaisi listan, j ossa olisi vain apu-muuttujan nimi (se on siis eri paikallinen muuttuja kuin aliohjelmassa prokkis1).
global globbis
set globbis 0
proc prokkis1 {} {
global globbis
set apu 88
info vars
}
proc prokkis2 {} {
set apu 77
info vars
}
Muita info-komennon optioita ovat args, body, cmcount, commands, default, exists, globals, level, library, locals, procs, script ja tclversion. N iistä löytyy lisätietoa lähteestä [WEL97W].
history
-komennolla saadaan ohjelmassa tietää, mitä komentoja on viimeiseksi suoritettu. history-komento on kätevä silloin, kun ei olla aivan varma, miss&au ml; aliohjelmissa komentoja on käyty suorittamassa. history näyttää oletuksena 20 viimeistä suoritettua komentoa, mutta sen määrää voidaan muuttaa optiolla keep.Esimerkissä
set x 0
set y 0
history keep 5
set apu1 1
set apu2 90
set apu3 754
history
=>
1 history keep 5
2 set apu1 1
3 set apu2 90
4 set apu3 754
5 history
muutetaan viideksi komentojen määrä, joita history-komento näyttää. Tällöin history-komento näyttää vain viisi edellistä komentoa mukaan lukien komennon, jolla sitä itseään kutsuttiin. history-komento listaa järjestyksessä komennot siten, että suurin järjestysnumero on viimeksi kutsutulla komennolla.
Luk-tutkielma: Tcl/Tk -opiksi ja iloksi.